package ${basePackage}.generator;

import cn.hutool.core.io.FileUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author ${author}
 * 动态生成模板类
 */
public class DynamicGenerator {
    /**
     * 生成动态文件
     * @param inputPath 模板文件输出路径
     * @param outputPath 输出路径
     * @param model 模板文件
     * @throws IOException
     * @throws TemplateException
     */
    public static void doGenerator(String inputPath,String outputPath,Object model) throws IOException, TemplateException {
        //创建configuration对象，指定freemarker版本
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);

        //指定模板文件路径
        File templateDir = new File(inputPath).getParentFile();
        configuration.setDirectoryForTemplateLoading(templateDir);
        //指定字符集
        configuration.setDefaultEncoding("UTF-8");

        //创建模板对象
        String templateName = new File(inputPath).getName();
        Template template = configuration.getTemplate(templateName);

        // 文件不存在，则创建文件
        if (!FileUtil.exist(outputPath)){
            //创建
            FileUtil.touch(outputPath);
        }
        //指定生成的文件
        FileWriter out = new FileWriter(outputPath);

        //处理并生成文件
        template.process(model,out);

        //关闭流
        out.close();
    }
}
